package mx.ipn.pruebas;

import mx.ipn.persistencia.*;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;
import java.util.Collection;
import java.util.Iterator;

public class pruebaDAO {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		// Crea la fabrica especifica de MySQL
		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);

		// Crea un DAO para la tabla Cliente
		ClienteDAO clienteDAO = fabricaMySQL.getClienteDAO();

		// Crea un nuevo TO
		ClienteTO clienteTO = new ClienteTO(0, "58150612", "Jorge Daniel",
				"Sampayo", "Vargas");
		int resultado;

		// Inserta el TO en la base de datos
		/*
		 * if (clienteDAO.insertCliente(clienteTO))
		 * System.out.println("Insertado correctamente"); else
		 * System.out.println("Falla en la insercion");
		 */

		// Selecciona todos los clientes
		Collection<ClienteTO> coleccion = clienteDAO.selectClientes();
		if (coleccion != null) {
			System.out.println("Seleccion exitosa");

			Iterator<ClienteTO> iteracion = coleccion.iterator();
			while (iteracion.hasNext()) {
				clienteTO = iteracion.next();

				System.out.println("CLIENTE");
				System.out.println("id_cliente: " + clienteTO.getIdCliente());
				System.out.println("telefono: " + clienteTO.getTelefono());
				System.out.println("nombre: " + clienteTO.getNombre());
				System.out.println("apellido_paterno: "
						+ clienteTO.getApellidoPaterno());
				System.out.println("apellido_materno: "
						+ clienteTO.getApellidoMaterno());
			}
		} else {
			System.out.println("Falla en la seleccion");
		}

		// Selecciona clientes por apellido
		coleccion = clienteDAO.selectClientesByApellidoPaterno("Álvarez");
		if (coleccion != null) {
			System.out.println("Seleccion exitosa");

			Iterator<ClienteTO> iteracion = coleccion.iterator();
			while (iteracion.hasNext()) {
				clienteTO = iteracion.next();

				System.out.println("CLIENTE CON APELLIDO ÁLVAREZ");
				System.out.println("id_cliente: " + clienteTO.getIdCliente());
				System.out.println("telefono: " + clienteTO.getTelefono());
				System.out.println("nombre: " + clienteTO.getNombre());
				System.out.println("apellido_paterno: "
						+ clienteTO.getApellidoPaterno());
				System.out.println("apellido_materno: "
						+ clienteTO.getApellidoMaterno());
			}
		} else {
			System.out.println("Falla en la seleccion");
		}
		// ************************************************************************************
		// crea un DAO para la tabla dia festivo
		DiaFestivoDAO diaFestivoDAO = fabricaMySQL.getDiaFestivoDAO();

		DiaFestivoTO diaFestivoTO = new DiaFestivoTO(21, "navidad", Short
				.parseShort(Integer.toString(24)), Short.parseShort(Integer
				.toString(12)), true);

		// inserta dia festivo
		if (diaFestivoDAO.insertDiaFestivo(diaFestivoTO))
			System.out.println("Insertado correctamente");
		else
			System.out.println("Falla en la insercion");

		// borra dia festivo
		resultado = diaFestivoDAO.deleteDiaFestivo("navidad");
		if ( resultado == 1)
			System.out.println("Borrado correctamente");
		else if(resultado == 0)
			System.out.println("Falla en el borrado");
		else if(resultado == 2)
			System.out.println("Ocurrio una excepcion al borrar");

		// actualiza dia festivo
		diaFestivoTO.setIdDiaFestivo(200);
		diaFestivoTO.setDescripcion("dia dia");
		resultado = diaFestivoDAO.updateDiaFestivo(diaFestivoTO);
		if (resultado == 1)
			System.out.println("Actualizado correctamente");
		else if (resultado == 0)
			System.out.println("Falla en la actualizacion");
		else if(resultado == 2)
			System.out.println("Ocurrio una excepcion");
		
		// Busca dia festivo por id
		diaFestivoTO = diaFestivoDAO.findDiaFestivoById(1);
		if (diaFestivoTO != null) {
			System.out.println("Seleccion exitosa");

			System.out.println("dia  festivo ");
			System.out.println("id_dia_Festivo: "
					+ diaFestivoTO.getIdDiaFestivo());
			System.out.println("descripcion: " + diaFestivoTO.getDescripcion());
			System.out.println("dia: " + diaFestivoTO.getDia());
			System.out.println("mes: " + diaFestivoTO.getMes());
			System.out.println("estado_registro: "
					+ diaFestivoTO.getActivo());
		} else {
			System.out.println("Falla en la seleccion");
		}
		
		//busca todos los dias festivos activos y no activos.
		/*Collection<DiaFestivoTO> coleccionn = diaFestivoDAO.selectDiasFestivos();
		if (coleccionn != null) {
			System.out.println("Seleccion exitosa");

			Iterator<DiaFestivoTO> iteracionn = coleccionn.iterator();
			
			while (iteracionn.hasNext()) {
				diaFestivoTO = iteracionn.next();

				System.out.println("Dia Festivo");
				System.out.println("id_diaFestivo: " + diaFestivoTO.getIdDiaFestivo());
				System.out.println("descripcion: " + diaFestivoTO.getDescripcion());
				System.out.println("dia: " + diaFestivoTO.getDia());
				System.out.println("mes: "
						+ diaFestivoTO.getMes());
				System.out.println("Estado Registro: "
						+ diaFestivoTO.getEstadoRegistro());
			}
		} else {
			System.out.println("Falla en la seleccion");
		}*/
		
		// busca todos los dias festivos activos y no activos de un mes
		//Collection<DiaFestivoTO> coleccionn = diaFestivoDAO.selectDiasFestivosByMes(/*Short
			//	.parseShort(Integer.toString(12))*/"Enero");
		/*if (coleccionn != null) {
			System.out.println("Seleccion exitosa");

			Iterator<DiaFestivoTO> iteracionn = coleccionn.iterator();
			
			while (iteracionn.hasNext()) {
				diaFestivoTO = iteracionn.next();

				System.out.println("Dia Festivo por mes");
				System.out.println("id_diaFestivo: " + diaFestivoTO.getIdDiaFestivo());
				System.out.println("descripcion: " + diaFestivoTO.getDescripcion());
				System.out.println("dia: " + diaFestivoTO.getDia());
				System.out.println("mes: "
						+ diaFestivoTO.getMes());
				System.out.println("Estado Registro: "
						+ diaFestivoTO.getEstadoRegistro());
			}
		} else {
			System.out.println("Falla en la seleccion");
		}*/
		
		//Busca DIAS FESTIVOS ACTIVOS
		Collection<DiaFestivoTO> coleccionn = diaFestivoDAO.selectDiasFestivosActivos();
	if (coleccionn != null) {
		System.out.println("Seleccion exitosa");

		Iterator<DiaFestivoTO> iteracionn = coleccionn.iterator();
		
		while (iteracionn.hasNext()) {
			diaFestivoTO = iteracionn.next();

			System.out.println("Dia Festivo Activo");
			System.out.println("id_diaFestivo: " + diaFestivoTO.getIdDiaFestivo());
			System.out.println("descripcion: " + diaFestivoTO.getDescripcion());
			System.out.println("dia: " + diaFestivoTO.getDia());
			System.out.println("mes: "
					+ diaFestivoTO.getMes());
			System.out.println("Estado Registro: "
					+ diaFestivoTO.getActivo());
		}
	} else {
		System.out.println("Falla en la seleccion");
	}
	}

}
